﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CANO.Data.DAOs
{
	public class ProfesionDAO
	{
		public int TipoProfesionID { get; set; }
		public string ProfesionDesc { get; set; }

		public static List<ProfesionDAO> getAll()
		{
			using (CANOPropiedadesDCDataContext context = new CANOPropiedadesDCDataContext())
			{
				List<ProfesionDAO> profesionList = new List<ProfesionDAO>();

				var profesion =
					from c in context.TipoProfesion
					select c;

				foreach (var item in profesion)
				{
					ProfesionDAO objProfesion = new ProfesionDAO();
					objProfesion.TipoProfesionID = item.TipoProfesionID;
					objProfesion.ProfesionDesc = item.Profesion;
					profesionList.Add(objProfesion);
				}
				return profesionList;
			}
		}

        public static List<ProfesionDAO> GetProfesionByName(string Profesion)
        {
            using (CANOPropiedadesDCDataContext context = new CANOPropiedadesDCDataContext())
            {
                List<ProfesionDAO> profesionList = new List<ProfesionDAO>();

                var profesion =
                    from c in context.TipoProfesion
                    where c.Profesion == Profesion
                    select c;

                foreach (var item in profesion)
                {
                    ProfesionDAO objProfesion = new ProfesionDAO();
                    objProfesion.TipoProfesionID = item.TipoProfesionID;
                    objProfesion.ProfesionDesc = item.Profesion;
                    profesionList.Add(objProfesion);
                }
                return profesionList;
            }
        }

		public static void create(string pEspecialidad)
		{
			using (CANOPropiedadesDCDataContext context = new CANOPropiedadesDCDataContext())
			{
				TipoProfesion newProfesion = new TipoProfesion();
				newProfesion.Profesion = pEspecialidad;
				newProfesion.TipoProfesionID = getId();

				context.TipoProfesion.InsertOnSubmit(newProfesion);
				context.SubmitChanges();
			}
		}

		public static int createNew(string pEspecialidad)
		{
			using (CANOPropiedadesDCDataContext context = new CANOPropiedadesDCDataContext())
			{
				TipoProfesion newProfesion = new TipoProfesion();
				newProfesion.Profesion = pEspecialidad;
				newProfesion.TipoProfesionID = getId();

				context.TipoProfesion.InsertOnSubmit(newProfesion);
				context.SubmitChanges();

				return newProfesion.TipoProfesionID;
			}
		}

		private static int getId()
		{
			using (CANOPropiedadesDCDataContext context = new CANOPropiedadesDCDataContext())
			{
				var tipoProfesionColl =
					from tt in context.TipoProfesion
					select tt.TipoProfesionID;

				return tipoProfesionColl.Max() + 1;
			}
		}

		public static int? GetIdByName(string profesionToValidate)
		{
			using (CANOPropiedadesDCDataContext context = new CANOPropiedadesDCDataContext())
			{
				var profesionColl =
					(from tp in context.TipoProfesion
					 where tp.Profesion == profesionToValidate
					 select tp);

				return profesionColl.Single().TipoProfesionID;
			};
		}
	}
}
